package queuedemo;
import java.util.LinkedList;
import java.util.Deque;

public class MyQueue {
    public static void main(String[] args) {
        MyStack stack = new MyStack();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println(stack.pop());
//        System.out.println(stack.pop());
//        System.out.println(stack.pop());
    }
}
class MyStack {
    /** 使用队列实现栈
     * 直接使用双向队列即可
     *
     * 尾插 尾删即可
     * Deque<Integer> queue = new LinkedList<Integer>();
     * 上述代码底层结构是双向链表，此为链式双向队列
     *
     * Deque<Integer> queue = new ArrayDeque<Integer>();
     * 上述代码底层为顺序表，此为线性双向队列*/
    Deque<Integer> myStack;


    public MyStack() {
        myStack = new LinkedList<>();
    }

    public void push(int x) {
        myStack.offerLast(x);
    }

    public int pop() {
        if(myStack.size()==0) {
            return -1;
        }
        return myStack.pollLast();
    }

    public int top() {
        if(myStack.size()==0) {
            return -1;
        }
        return myStack.peekLast();
    }

    public boolean empty() {
        return myStack.size()==0;
    }
}

